#!/bin/bash
#Script de la funcion MoverV5

#*********************************************
#		FUNCIONES
#*********************************************

#Mueve el archivo desde el directorio origen al destino,
# en el destino no hay archivo con ese nombre

MoverEstandard() {
	
	archivoNuevo="${archivo}.0"
	cp "$RUTA_ORIGEN/$archivo" "$RUTA_DESTINO/$archivoNuevo"
	rm "$RUTA_ORIGEN/$archivo"

}

#Mueve el archivo desde el directorio origen al destino,
# en el destino hay un archivo con el mismo nombre

MoverDuplicado(){
	
	n2=0
	for arch in `ls "$RUTA_DESTINO" | grep -i "\${archivo}\..*"`
	do
		n="${arch##*.}"
		if [ $n -gt $n2 ]; then
			n2=$n
		fi
	done
	
	let n=$n2+1
	archivoNuevo="${archivo}.$n"
	cp "$RUTA_ORIGEN/$archivo" "$RUTA_DESTINO/$archivoNuevo"
	rm "$RUTA_ORIGEN/$archivo"

}

ayuda(){
	echo "MoverV5: movimiento de archivos de un directorio a otro contemplando la posibilidad de archivos duplicados."
	echo "Opciones y Parametros:";
	echo "Obligatorios:";	
	echo "	-o [directorioOrigen/archivo]
		Archivo a mover,especificando la ruta del directorio donde se encuentra.";
	echo "	-d [directorioDestino]
		Se especifica el directorio donde se mover el archivo.";
	echo "Opcionales:";
	echo "	-c [comando]
		Comando que invoca la funcion";
	echo "	-h
		Se muestra la ayuda";
	exit 0;
}

#*********************************************
#		SCRIPT
#*********************************************

#Verifica cantidad de parametros
if [ $# -lt 2 ]; then
	echo "Numero de argumentos insuficiente"
	exit 1
else
#Proceso parametros
	while getopts 'o:d:c:h' OPTION; do
		case $OPTION in
			o)
				RUTA_ORIGEN="$OPTARG";
				;;
			d)
				RUTA_DESTINO="$OPTARG";
				;;
			c)
				COMANDO_INVOCANTE="$OPTARG";
				;;
			h)
				ayuda;
				;;			
			?)
	      			echo "$OPTARG: parametro invalido";
	      		exit 1;
	      		;;
		esac;
	done	
fi

#Extrae archivo y ruta del directorio
archivo="${RUTA_ORIGEN##*/}"
RUTA_ORIGEN="${RUTA_ORIGEN%/*}"

if [ "$COMANDO_INVOCANTE" = "DetectaV5" -o "$COMANDO_INVOCANTE" = "BuscarV5" ]; then
	grabar=1
else
	grabar=0
fi


#Verifica que origen y destino no sean iguales
if [ "$RUTA_ORIGEN" = "$RUTA_DESTINO" ]; then
	if [ $grabar ]; then
		LoguearV5.sh -c "$COMANDO_INVOCANTE" -m "7" -t E &
		wait $!
	else	
		echo "Se quiere copiar archivo en el mismo directorio."
	fi
	exit 1
fi

#Verifica existencia directorios
if [ ! -d "$RUTA_ORIGEN" -o ! -d "$RUTA_DESTINO" ]; then
	if [ ! -d "$RUTA_ORIGEN" ]; then
		if [ $grabar ]; then
			LoguearV5.sh -c "$COMANDO_INVOCANTE" -m "2" -t E &
			LoguearV5.sh -c "$COMANDO_INVOCANTE" -m ": $RUTA_ORIGEN." -t E &
		wait $!
		else 
			echo "No existe el directorio : $RUTA_ORIGEN."
		fi	
	fi
	if [ ! -d "$RUTA_DESTINO" ]; then
		if [ $grabar ]; then
			LoguearV5.sh -c "$COMANDO_INVOCANTE" -m "2" -t E &
			LoguearV5.sh -c "$COMANDO_INVOCANTE" -m ": $RUTA_DESTINO." -t E &
		wait $!
		else 
			echo "No existe el directorio: $RUTA_DESTINO."
		fi	
	fi
	exit 1
fi

if [ ! -f "$RUTA_ORIGEN/$archivo" ];then
	if [ $grabar ]; then
		LoguearV5.sh -c "$COMANDO_INVOCANTE" -m "1" -t E &
		LoguearV5.sh -c "$COMANDO_INVOCANTE" -m ": $archivo en $RUTA_ORIGEN." -t E &
		wait $!
	else
		echo "No existe el archivo: $archivo en el directorio: $RUTA_ORIGEN."
	fi	
	exit 1
fi

if [ $grabar ]; then
	LoguearV5.sh -c "$COMANDO_INVOCANTE" -m "Moviendo el archivo: $archivo de la carpeta: $RUTA_ORIGEN a $RUTA_DESTINO." -t I & 
	wait $!
fi

if [  `ls "$RUTA_DESTINO" | grep -c "\${archivo}\..*"` -eq 0 ]; then
	MoverEstandard;
else
	MoverDuplicado;
fi

exit 0


